#pragma once

//namespace yangyi2
//{
//	template <class iterator,class Ref,class Ptr>
//	class __reverse_iterator
//	{
//		typedef __reverse_iterator<iterator, Ref, Ptr> RIterator;
//	public:
//		iterator _cur;
//		__reverse_iterator(iterator& it)
//			:_cur()
//		{
//
//		}
//	private:
//		iterator _cur;
//	};
//}

namespace yangyi
{
	template <class iterator,class Ref,class Ptr>
	struct __reverse_iterator
	{
		typedef __reverse_iterator<iterator, Ref, Ptr> RIterator;
		iterator _cur;

		__reverse_iterator(RIterator& it)
			:_cur(it._cur)
		{

		}
		RIterator operator++()
		{
			--_cur;
			return *this;
		}
		RIterator operator--()
		{
			++_cur;
			return *this;
		}
		bool operator==(const RIterator& it)const
		{
			return _cur == it._cur;
		}
		bool operator!=(const RIterator& it)const
		{
			return _cur != it._cur;
		}
	};
}